/*
 * @Description: 增强流-缓冲流（高效流）
 * 
 * @Author: rendc
 * 
 * @Date: 2025-08-22 09:18:25
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-08-22 09:38:43
 */

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class TestBuffered {
  // 使用缓冲流 复制一张图片
  public static void main(String[] args) throws Exception {
    // 1. 创建基础流对象 - 字节流
    FileInputStream fis = new FileInputStream("test.png");
    // FileOutputStream fos = new FileOutputStream("test_copy.png");
    // 查看基础流效率 800ms左右
    // long start = System.currentTimeMillis();
    // int data;
    // while ((data = fis.read()) != -1) {
    // fos.write(data);
    // }
    // long end = System.currentTimeMillis();
    // System.out.println("拷贝时长：" + (end - start) + "ms");
    // // 关闭资源
    // fos.close();
    // fis.close();

    // 2. 创建增强流 - 缓冲流(高效流) - 对比
    BufferedInputStream bis = new BufferedInputStream(fis);
    BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("test_copy_02.png"));
    // 使用缓冲流读写 1-2ms左右
    // 缓冲区大小
    long start = System.currentTimeMillis();
    byte[] buff = new byte[1024];
    int data;
    while ((data = bis.read(buff)) != -1) {
      bos.write(buff, 0, data);
      // 刷新
      bos.flush();
    }
    long end = System.currentTimeMillis();
    System.out.println("缓冲流拷贝时长：" + (end - start) + "ms");
    // 关闭流 只需要关闭增强流
    bos.close();
    bis.close();
  }
}